<?php

// PHP雪里开轻量级报修系统 V1.0Beta
// 演示地址: http://baoxiu.chalide.cn
// 更新关注: /weivote
// 文件路径: install_ajax.php
// 文件大小: 5845 字节
// 最后修改时间: 2025-06-14 08:45:17
// 作者: yujianyue
// 邮件: 15058593138@qq.com
// 版权所有,保留发行权和署名权

/**
 * 本文件功能：数据库安装ajax处理
 * 版权声明：保留发行权和署名权
 * 作者信息：功能反馈:15058593138@qq.com(手机号同微信)
 */

header('Content-Type: application/json; charset=utf-8');

// 接收参数
$db_host = $_POST['db_host'] ?? 'localhost';
$db_name = $_POST['db_name'] ?? 'repair_system';
$db_user = $_POST['db_user'] ?? 'root';
$db_pass = $_POST['db_pass'] ?? '';
$db_prefix = $_POST['db_prefix'] ?? '';
$import_demo = isset($_POST['import_demo']) && $_POST['import_demo'] === '1';

try {
    // 尝试连接数据库
    $mysqli = new mysqli($db_host, $db_user, $db_pass);
    
    // 检查连接
    if ($mysqli->connect_error) {
        throw new Exception("数据库连接失败: " . $mysqli->connect_error);
    }
    
    // 设置字符集
    $mysqli->set_charset('utf8mb4');
    
    // 检查数据库是否存在，不存在则创建
    $sql = "CREATE DATABASE IF NOT EXISTS `" . $mysqli->real_escape_string($db_name) . "` DEFAULT CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci";
    if (!$mysqli->query($sql)) {
        throw new Exception("创建数据库失败: " . $mysqli->error);
    }
    
    // 选择数据库
    if (!$mysqli->select_db($db_name)) {
        throw new Exception("选择数据库失败: " . $mysqli->error);
    }
    
    // 读取SQL文件内容
    $sql_content = file_get_contents('install.sql');
    if ($sql_content === false) {
        throw new Exception("无法读取SQL安装文件");
    }
    
    // 替换表前缀
    if (!empty($db_prefix)) {
        $sql_content = str_replace('`stux`', '`' . $db_prefix . 'stux`', $sql_content);
        $sql_content = str_replace('`bxiu`', '`' . $db_prefix . 'bxiu`', $sql_content);
        $sql_content = str_replace('`hist`', '`' . $db_prefix . 'hist`', $sql_content);
        $sql_content = str_replace('`site`', '`' . $db_prefix . 'site`', $sql_content);
        
        // 替换外键约束
        $sql_content = str_replace('stux (', $db_prefix . 'stux (', $sql_content);
        $sql_content = str_replace('bxiu (', $db_prefix . 'bxiu (', $sql_content);
    }
    
    // 执行SQL语句
    $statements = explode(';', $sql_content);
    foreach ($statements as $statement) {
        $statement = trim($statement);
        if (!empty($statement)) {
            if (!$mysqli->query($statement . ';')) {
                throw new Exception("执行SQL语句失败: " . $mysqli->error . "<br>语句: " . $statement);
            }
        }
    }
    
    // 如果需要导入演示数据
    if ($import_demo) {
        $demo_content = file_get_contents('demo.sql');
        if ($demo_content === false) {
            throw new Exception("无法读取演示数据SQL文件");
        }
        
        // 替换表前缀
        if (!empty($db_prefix)) {
            $demo_content = str_replace('`stux`', '`' . $db_prefix . 'stux`', $demo_content);
            $demo_content = str_replace('`bxiu`', '`' . $db_prefix . 'bxiu`', $demo_content);
            $demo_content = str_replace('`hist`', '`' . $db_prefix . 'hist`', $demo_content);
        }
        
        // 执行演示数据SQL语句
        $demo_statements = explode(';', $demo_content);
        foreach ($demo_statements as $statement) {
            $statement = trim($statement);
            if (!empty($statement)) {
                if (!$mysqli->query($statement . ';')) {
                    throw new Exception("执行演示数据SQL语句失败: " . $mysqli->error);
                }
            }
        }
    }
    
    // 创建配置文件
    $config_content = "<?php
/**
 * 本文件功能：数据库连接配置
 * 版权声明：保留发行权和署名权
 * 作者信息：功能反馈:15058593138@qq.com(手机号同微信)
 */

// 数据库连接参数
define('DB_HOST', '{$db_host}');
define('DB_NAME', '{$db_name}');
define('DB_USER', '{$db_user}');
define('DB_PASS', '{$db_pass}');
define('DB_PREFIX', '{$db_prefix}');

// 系统参数
define('SYSTEM_VERSION', '1.0.0');
define('MAX_UPLOAD_SIZE', 5); // 单位MB

// 菜单配置
\$MENU = [
    '系统' => [
        ['名称' => '学生管理', 'do' => 'lius'],
        ['名称' => '报修管理', 'do' => 'libx'],
        ['名称' => '系统设置', 'do' => 'site'],
        ['名称' => '修改密码', 'do' => 'pass'],
        ['名称' => '退出', 'do' => 'lgout']
    ],
    '后勤' => [
        ['名称' => '报修管理', 'do' => 'list'],
        ['名称' => '修改密码', 'do' => 'pass'],
        ['名称' => '退出', 'do' => 'lgout']
    ],
    '学生' => [
        ['名称' => '报修提交', 'do' => 'bxiu'],
        ['名称' => '报修记录', 'do' => 'list'],
        ['名称' => '修改密码', 'do' => 'pass'],
        ['名称' => '退出', 'do' => 'lgout']
    ]
];
";
/*    
    if (file_put_contents('inc/conn.php', $config_content) === false) {
        // 尝试创建目录
        if (!is_dir('inc') && !mkdir('inc', 0755, true)) {
            throw new Exception("无法创建inc目录");
        }
        
        if (file_put_contents('inc/conn.php', $config_content) === false) {
            throw new Exception("无法创建配置文件");
        }
    }
*/    
    // 创建默认JSON配置文件
    $json_content = '{
    "site_name": "简易报修系统",
    "upload_size": "5",
    "version": "1.0.0"
}';
    
    if (file_put_contents('inc/json.php', $json_content) === false) {
        throw new Exception("无法创建JSON配置文件");
    }
    
    // 创建图片存储目录
    if (!is_dir('Img') && !mkdir('Img', 0755, true)) {
        throw new Exception("无法创建图片存储目录");
    }
    
    echo json_encode(['status' => 'success', 'message' => '安装成功']);
    
} catch (Exception $e) {
    echo json_encode(['status' => 'error', 'message' => $e->getMessage()]);
}
